PHP localisatie
Home

PHP localisatie

PHP localisatie

Hoewel elke PHP programmeur uiteindelijk een mondje Engels moet spreken om de syntaxis te begrijpen, kan je met PHP toepassingen maken die zowat elke taal spreken. Sommige toepassingen moeten door sprekers van verschillende talen gebruikt kunnen worden.

Probleem

Hoewel elke PHP programmeur uiteindelijk een mondje Engels moet spreken om de syntaxis te begrijpen, kan je met PHP toepassingen maken die zowat elke taal spreken. Sommige toepassingen moeten door sprekers van verschillende talen gebruikt kunnen worden.

Een toepassing, geschreven voor Franstaligen, kan met de PHP ondersteuning voor internationalisatie en lokalisatie redelijk gemakkelijk omgezet worden naar het Engels, Nederlands of nog een andere taal.

Design

We gebruiken de PHP’s intl extensie voor de internationalisering en lokalisatie van applicaties.

Deze uitbreiding is gebouwd op de krachtige ICU bibliotheek. ICU wordt algemeen gebruikt en heeft zowel C/c ++ en Java implementaties. Dit betekent dat je de begrippen die je hier leert om in PHP te lokaliseren, ook kan toepassen in andere (programmeertalen. De extensie intl is gebundeld met PHP versies 5.3.0 en hoger.

Je moet wel nakijken om de intl extensie geregistreerd is het php.ini bestand.

Om de extensie te activeren moet je de volgende regel toevoegen in het php.ini bestand:

extension=php_intl.dll 

En stel vervolgens de intl.default_locale en intl.error_level richtlijnen in het php.ini bestand:

[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING 

De intl.error_level richtlijn is optioneel.

Internationalisatie (afgekort tot I18N - er staan 18 letters tussen de I en de n) is het proces waarbij een applicatie, die is ontworpen voor slechts één landinstelling, geherstructurereerd wordt zodat het kan worden gebruikt in vele verschillende locales.

Lokalisatie (vaak afgekort tot L10N - tussen de L en de n staan 10 letters) is het proces van het toevoegen van een nieuwe landinstelling aan een geïnternationaliseerde toepassing.

Een landinstelling (locale) is een groep instellingen die tekst opmaak en taalgewoontes in een bepaald gebied van de wereld beschrijven. Locales beschrijven gedrag voor:

  1. Alfabetische volgorde (collation): hoe tekst geordend wordt, de alfabetische volgorde van de letters.
  2. Getallen: hoe numerieke gegevens gepresenteerd worden, ook aantal decimalen en duizend- en honderdtallen en negatieve getallen.
  3. Tijd en datums: hoe tijd en datuminformatie wordt gepresenteerd zoals de namen van de maanden en de weken.
  4. Tekstboodschappen (messages): tekstboodschappen die al naargelang de ingestelde taal veranderen.

Het patroon kan ook een argument van het type prural bevatten. Door het argument 0 te hergebruiken, kan je een volledig nieuwe tekst bouwen op basis van de waarde van dit argument. In het Engels levert dat woorden als failed en succesfull op, in het Frans réussie en ratée. De Franse constructie maakt onderscheid tussen 0, 1, om de Franse woorden te verkrijgen.

$modernWaysMessage['en_US'] =
    array('CONNECTION' =>
        "Connection to host {0} to {1} database {2, plural, =0 {failed} other {succesfull}}.");
 
$modernWaysMessage['fr_FR'] =
    array('CONNECTION' =>
        "Connexion avec hôte {0} to {1} banque de données {2, plural, =0 {ratée} other {réussie}}.");

//output
echo MessageFormatter::formatMessage('en_US',
    $modernWaysMessage['en_US']['CONNECTION'], array('localhost', 'WWWET', '0'));
echo "<br>";
echo MessageFormatter::formatMessage('fr_FR',
    $modernWaysMessage['fr_FR']['CONNECTION'], array('localhost', 'WWWET', '0'));
PHP Output MessagFormatter met Plural Type argument
PHP Output MessagFormatter met Plural Type argument

Met het meer algemene select argumenttype kan je het bericht formatteren op basis van willekeurige waarden die je kan selecteren. Dit is handig voor het kiezen van verschillende woorden op basis van een argument. Hier is een voorbeeld:

$modernWaysMessage['nl_NL'] =
    array('CONNECTION' =>
        "Verbinding met host {0} met database {1} {2, select, f {mislukt} other {gelukt}}.");

echo MessageFormatter::formatMessage('nl_NL',
    $modernWaysMessage['nl_NL']['CONNECTION'], array('localhost', 'WWWET', 'f'));
PHP Output MessagFormatter met select argumenttype
PHP Output MessagFormatter met select argumenttype

JI
2016-12-12 13:03:48